package com.cheng.im.service.group.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cheng.im.service.common.resp.CommonResult;
import com.cheng.im.service.group.domain.ImGroupMember;
import com.cheng.im.service.group.model.req.*;
import com.cheng.im.service.group.model.resp.GetRoleInGroupResp;

import java.util.Collection;
import java.util.List;

/**
* @author Cheng
* @description 针对表【im_group_member】的数据库操作Service
* @createDate 2024-12-19 09:16:10
*/
public interface ImGroupMemberService extends IService<ImGroupMember> {

    public CommonResult importGroupMember(ImportGroupMemberReq req);

    public CommonResult addMember(AddGroupMemberReq req);

    public CommonResult removeMember(RemoveGroupMemberReq req);

    public CommonResult addGroupMember(String groupId, String appId, GroupMemberDto dto);

    public CommonResult removeGroupMember(String groupId, String appId, String memberId);

    public CommonResult<GetRoleInGroupResp> getRoleInGroupOne(String groupId, String memberId, String appId);

    public CommonResult<Collection<String>> getMemberJoinedGroup(GetJoinedGroupReq req);

    public CommonResult<List<GroupMemberDto>> getGroupMember(String groupId, String appId);

    public List<String> getGroupMemberId(String groupId, String appId);

    public List<GroupMemberDto> getGroupManager(String groupId, String appId);

    public CommonResult updateGroupMember(UpdateGroupMemberReq req);

    public CommonResult transferGroupMember(String owner, String groupId, String appId);

    public CommonResult speak(SpeaMemberReq req);

    CommonResult<Collection<String>> syncMemberJoinedGroup(String operater, String appId);
}
